from pydantic import BaseModel, Field, validator
from typing import Optional, List, Literal


class AddEffectRequest(BaseModel):
    """添加特效请求模型"""

    # 核心参数
    effect_type: str = Field(..., description="特效类型名称（必填，需从系统支持的特效列表中选择，如:MV封面）")
    effect_category: Optional[Literal["scene", "character"]] = Field("scene",
                                                           description="特效分类（必填，场景特效scene或人物特效character）")

    # 时间参数
    start: Optional[float] = Field(0, description="特效开始时间（秒，选填，默认0）")
    end: Optional[float] = Field(3.0, description="特效结束时间（秒，选填，默认3.0）")

    # 草稿参数
    draft_id: Optional[str] = Field(None,
                                    description="草稿ID（选填，指定要添加特效的目标草稿，若未传或对应草稿不存在，可能自动创建新草稿）")

    # 轨道参数
    track_name: Optional[str] = Field("effect_01",
                                      description="特效轨道名称（选填，默认\"effect_01\"，用于区分不同特效轨道）")

    # 特效参数
    params: Optional[List[Optional[float]]] = Field([],
                                                    description="特效参数列表（选填，未提供的参数将使用默认值，具体参数取决于特效类型）")

    # 画布参数
    width: Optional[int] = Field(1080, description="画布宽度（选填，默认1080）")
    height: Optional[int] = Field(1920, description="画布高度（选填，默认1920）")
